package Modelo;

//import java.util.*;

import java.util.ArrayList;


public class TicketCine {
    boolean s; 
    GestorTicketCine gestorTicketCine;
    Entrada entrada;
    Sesion sesion;
    Usuario usuario;
    protected UsuarioGenerico invitado;
    protected Administrador administrador;
    protected UsuarioRegistrado ur;
   
    Sala sala;
    private static TicketCine instance = null;
    private int nombre;
    private int direccion;
    protected ArrayList<UsuarioRegistrado> usuariosregistrados;
    protected ArrayList<Administrador> administradores;
    protected ArrayList<Provincia> provincias;

    
    protected ArrayList<Cine> cines;
    protected ArrayList<Sala> salas;
    protected ArrayList<Pelicula> peliculas;
    protected ArrayList<Sesion> sesiones;
    protected ArrayList<UsuarioGenerico> usuariosgenericos;
   

    public TicketCine() {
    }

    public static TicketCine getInstance() {
        if (instance == null) {
            instance = new TicketCine();
        }
        return instance;
    }
    
    public Usuario entrar() {
        usuario = new Usuario(this);
        return usuario;
    }

    public ArrayList<UsuarioRegistrado> getUsuariosregistrados() {
        return usuariosregistrados;
    }
    
    public void addUsuarioregistrados(UsuarioRegistrado usR) {
        boolean existe = false;
        for (UsuarioRegistrado ur : usuariosregistrados) {
            if(ur.getNombre().equals(usR.getNombre())){
                ur = usR;
                existe = true;
            }   
        }
        
        if( !existe ){
            usuariosregistrados.add(usR);
        }
        
    }
    
    public void setProvincias(ArrayList<Provincia> provincias) {
        this.provincias = provincias;
    }
   

    public void setUsuariosregistrados(ArrayList<UsuarioRegistrado> usuariosregistrados) {
        this.usuariosregistrados = usuariosregistrados;
    }

    public ArrayList<Administrador> getAdministradores() {
        return administradores;
    }

    public void setAdministradores(ArrayList<Administrador> administradores) {
        this.administradores = administradores;
    }


    public ArrayList<Provincia> getProvincias() {
        return provincias;
    }

   /* public Usuario login(String dni, String contrasenya) {
       Usuario us = new Usuario("default", "default");
       System.out.print("Usuarios : " + usuarios.size());
        for (int i = 0; i < usuarios.size(); i++) {
            if (usuarios.get(i).getDni().equals(dni) && usuarios.get(i).getContrasenya().equals(contrasenya)) {
                return usuarios.get(i);
            }
            System.out.print("Usuario us no encontrado");
        }

        return us;
    }*/

    public Boolean ComprobarEntradas() {
        throw new UnsupportedOperationException();
    }

    public Boolean pagarEntrada() {
        throw new UnsupportedOperationException();
    }

    public ArrayList<UsuarioGenerico> getUsuariosgenericos() {
        return usuariosgenericos;
    }

    public void cargarDatos() {
        
        usuariosgenericos = new ArrayList<>();
        administradores = new ArrayList<>();
        usuariosregistrados = new ArrayList<>();
        provincias = new ArrayList<>();
        cines = new ArrayList<>();
        salas = new ArrayList<>();
        peliculas = new ArrayList<>();
        sesiones = new ArrayList<>();
        
        invitado = new UsuarioGenerico("Migue","migue"); 
        administrador = new Administrador("admin", "admin");
        ur = new UsuarioRegistrado("paco", "paco");
       
        
        usuariosgenericos.add(invitado);
        administradores.add(administrador);
        usuariosregistrados.add(ur);
     
        
        //Cargar los datos desde lo mas concreto hasta lo mas general, 
        //Primero sesiones, salas, peliculas, cines, Provincias.
        
        Sesion sesionManyana = new Sesion("Manana", 11, 00);
        Sesion sesionTarde = new Sesion("Tarde", 17, 30);
        
        sesiones.add(sesionManyana);
        sesiones.add(sesionTarde);

        Sala soloManyana = new Sala("A", sesiones, 50);
        Sala soloTarde = new Sala("B", sesiones, 100);
        Sala myt = new Sala("C", sesiones, 150);

        salas.add(myt);
        salas.add(soloManyana);
        salas.add(soloTarde);
        
        Pelicula pelicula1 = new Pelicula("El lobo de wall street",2013, 16, "Leonardo di caprio", "Martin Scorcese", "","Drama"/*, sesiones*/);
        Pelicula pelicula2 = new Pelicula("Hercules",2013, 16, "Leonardo di caprio", "Martin Scorcese", "","Drama"/*, sesiones*/);
        ArrayList<Pelicula> peliculas_valencia = new ArrayList<>();
        peliculas_valencia.add(pelicula1);
        peliculas_valencia.add(pelicula2);
        Pelicula peliA = new Pelicula("Harry Potter", 2010, 16, "Daniel Raclife", "", "", ""/*, sesiones*/);
        ArrayList<Pelicula> peliculas_a = new ArrayList<>();
        peliculas_a.add(peliA);
        Pelicula peliB = new Pelicula("X-Men: Días del Futuro Pasado", 2014, 16, "", "Bryan Singer", "", ""/*, sesiones*/);
        ArrayList<Pelicula> peliculas_b = new ArrayList<>();
        peliculas_b.add(peliB);
        Pelicula peliM = new Pelicula("Maléfica", 2014, 16, "", "Robert Stromberg", "", ""/*, sesiones*/);
        ArrayList<Pelicula> peliculas_m = new ArrayList<>();
        peliculas_m.add(peliM);
        
        peliculas.clear();
        peliculas.add(pelicula1);
        peliculas.add(pelicula2);
        peliculas.add(peliA);
        peliculas.add(peliB);
        peliculas.add(peliM);
        
        Cine cin1V = new Cine( peliculas_valencia, salas, "ABC El Saler", "Valencia" ,46013 , "Av Profesor Lopez Piñero, 16");
        Cine cin2V = new Cine( peliculas_valencia, salas, "ABC Park", "Valencia", 46002, "Calle Roger de Lauria, 21");
        Cine cin3V = new Cine( peliculas_valencia, salas, "Babel", "Valencia" ,46021, "Calle de Vicente Sancho Tello, 10");
        Cine cin4V = new Cine( peliculas_valencia, salas, "Lys Cines", "Valencia", 46002, "Passeig de Russafa, 3");
        Cine cin6V = new Cine( peliculas_valencia, salas, "Yelmo Cines Valencia", "Av de Tirso de Molina, 16", 46015);
        Cine cin1A = new Cine( peliculas_a, salas, "Navas", "", 03001, "Calle de las Navas, 37");
        Cine cin2A = new Cine( peliculas_a, salas, "CINESA PANORAMIS", "Muelle de Poniente 6", 03001);
        Cine cin1B = new Cine( peliculas_b, salas, "Yelmo Cines Icaria 3D", "Calle Salvador Espriu, 61", 8005);
        Cine cin2B = new Cine( peliculas_b, salas, "Comedia", "Passeig de Gràcia, 13", 8007);
        Cine cin1M = new Cine( peliculas_m, salas, "Kinépolis", "C/ Edgar Neville, s/n", 28223);
        Cine cin2M = new Cine( peliculas_m, salas, "Casa de América", "Plaza de la Cibeles, 2", 28001);  
        
        Provincia pValencia = new Provincia("Valencia");
        Provincia pAlicante = new Provincia("Alicante");
        Provincia pBarcelona = new Provincia("Barcelona");
        Provincia pMadrid = new Provincia("Madrid");
        
        ArrayList<Cine> cines_V = new ArrayList<>();
        
        cines_V.add(cin1V);
        cines_V.add(cin2V);
        cines_V.add(cin3V);
        cines_V.add(cin4V);
        cines_V.add(cin6V);
        pValencia.setCines(cines_V);
        
        ArrayList<Cine> cines_A = new ArrayList<>();
        
        cines_A.add(cin1A);
        cines_A.add(cin2A);
        pAlicante.setCines(cines_A);
        
        ArrayList<Cine> cines_B = new ArrayList<>();
        
        cines_B.add(cin1B);
        cines_B.add(cin2B);
        pBarcelona.setCines(cines_B);
        
        
        ArrayList<Cine> cines_M = new ArrayList<>();
        
        cines_M.add(cin1A);
        cines_M.add(cin2A);
        pMadrid.setCines(cines_M);
        
        provincias.add(pValencia);
        provincias.add(pAlicante);
        provincias.add(pBarcelona);
        provincias.add(pMadrid);
     
    }
    

    public void addProvincia(Provincia pe) {
        provincias.add(pe);
    }

public void addPelicula(Pelicula p) {
        peliculas.add(p);
    }
    
}
